package com.buba.service.impl;

import com.buba.dao.RoleMapper;
import com.buba.pojo.Role;
import com.buba.service.RoleService;
import com.buba.vo.RoleVO;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import javax.annotation.Resource;
import java.util.List;
import java.util.Map;

@Service
@Transactional
public class RoleServiceImpl implements RoleService {

    @Resource
    private RoleMapper roleMapper;
    /**
     * todo 查询角色列表
     * @param roleVo
     * @return
     */
    public List<Role> findRoleList(RoleVO roleVo) {
        return roleMapper.findRoleList(roleVo);
    }

    /**
     * todo 添加角色
     * @param role
     * @return
     */
    public int addRole(Role role) {
        return roleMapper.addRole(role);
    }

    /**
     * todo 修改角色
     * @param role
     * @return
     */
    public int updateRole(Role role) {
        return roleMapper.updateRole(role);
    }

    /**
     * todo 删除角色
     * @param id
     * @return
     */
    public int deleteById(Integer id) {
        return roleMapper.deleteById(id);
    }
    /**
     * todo 保存角色菜单关系
     *
     * @param ids
     * @param roleId
     * @return
     */
    public int saveRoleMeru(String ids, Integer roleId) {
        try {
            //删除原有的菜单关系，根据角色ID删除
            roleMapper.deleteRoleMenu(roleId);
            // 将ids拆分成数组
            String[] idsStr = ids.split(",");
            // 循环调用
            for (int i = 0; i < idsStr.length; i++) {
                //调用保存菜单角色关系的方法
                roleMapper.addRoleMenu(roleId, idsStr[i]);
            }
            return 1;//成功
        } catch (Exception e) {
            e.printStackTrace();
        }
        return 0;//失败
    }



    /**
     * todo 查询所有角色
     * @return
     */
    public List<Map<String, Object>> findRoleListByMap() {
        return roleMapper.findRoleListByMap();
    }

    /**
     * todo 根据员工ID查询该员工拥有的角色列表
     * @param employeeId
     * @return
     */
    public List<Integer> findEmployeeRoleByEmployeeId(Integer employeeId) {
        return roleMapper.findEmployeeRoleByEmployeeId(employeeId);
    }



}
